package com.xayy.health.mgt;
import cn.hutool.core.util.IdUtil;
import com.github.javafaker.Faker;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class TelemetryDataFaker {
    public static void main(String[] args) {
        Faker faker = new Faker(Locale.CHINA);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

        String sateCode = "TL104";     // 固定卫星编码
        String paramCode = "ZK404";    // 固定参数编码

        for (int day = 0; day < 10; day++) { // 最近10天
            for (int hour = 0; hour < 24; hour++) { // 每小时一条数据
                String id = IdUtil.fastSimpleUUID(); // 假设你有 IdUtil 工具类

                // 随机选择 INT 或 FLOAT 类型
                String valueType = faker.regexify("(INT|FLOAT)");
                String value;
                if ("INT".equals(valueType)) {
                    value = String.valueOf(faker.number().numberBetween(0, 1000));
                } else { // FLOAT
                    value = String.valueOf(faker.number().randomDouble(2, 0, 100));
                }

                // 构造指定日期+小时的时间点（精确到小时）
                Date date = faker.date().past(10 - day, java.util.concurrent.TimeUnit.DAYS);
                String time = dateFormat.format(date).substring(0, 13) + ":" + String.format("%02d", hour) + ":00.000";

                System.out.printf("INSERT INTO tb_telemetry_data (id, sate_code, param_code, value_type, value, time) VALUES ('%s', '%s', '%s', '%s', '%s', '%s');%n",
                        id, sateCode, paramCode, valueType, value, time);
            }
        }
    }
}
